<?php

/**
 * 附件上传页面.
 *
 * @author Jianmin Chen <sky_hold@163.com>
 * @license http://www.phpwind.com
 *
 * @version $Id: UploadController.php 28799 2013-05-24 06:47:37Z yetianshi $
 */
class UploadController extends PwBaseController
{
    public function run()
    {
        header('Content-type: text/html; charset='.Wekit::V('charset'));
        //$pwServer['HTTP_USER_AGENT'] = 'Shockwave Flash';
        $swfhash = 1/*GetVerify($winduid)*/;
        Pw::echoJson(array('uid' => $this->loginUser->uid, 'a' => 'dorun', 'verify' => $swfhash));

        $this->setTemplate('');
    }

    public function dorunAction()
    {
        if (!$user = $this->_getUser()) {
            $this->showError('login.not');
        }
        $fid = $this->getInput('fid', 'post');

        Wind::import('SRV:upload.action.PwAttMultiUpload');

        $bhv = new PwAttMultiUpload($user, $fid);

        $upload = new PwUpload($bhv);
        if (($result = $upload->check()) === true) {
            $result = $upload->execute();
        }
        if ($result !== true) {
            $this->showError($result->getError());
        }
        if (!$data = $bhv->getAttachInfo()) {
            $this->showError('upload.fail');
        }
        $this->setOutput($data, 'data');
        $this->showMessage('upload.success');
    }

    public function replaceAction()
    {
        if (!$this->loginUser->isExists()) {
            $this->showError('login.not');
        }
        $aid = $this->getInput('aid');

        Wind::import('SRV:upload.action.PwAttReplaceUpload');

        $bhv = new PwAttReplaceUpload($this->loginUser, $aid);

        $upload = new PwUpload($bhv);
        if (($result = $upload->check()) === true) {
            $result = $upload->execute();
        }
        if ($result !== true) {
            $this->showError($result->getError());
        }
        $this->setOutput($bhv->getAttachInfo(), 'data');
        $this->showMessage('upload.success');
    }

    protected function _getUser()
    {
        $authkey = 'winduser';
        $pre = Wekit::C('site', 'cookie.pre');
        $pre && $authkey = $pre.'_'.$authkey;

        $winduser = $this->getInput($authkey, 'post');

        list($uid, $password) = explode("\t", Pw::decrypt(urldecode($winduser)));
        $user = new PwUserBo($uid);
        if (!$user->isExists() || Pw::getPwdCode($user->info['password']) != $password) {
            return null;
        }
        unset($user->info['password']);

        return $user;
    }
}
